package com.aims.server.service;

import com.aims.server.dto.ExtAccountFormDTO;
import com.aims.server.entity.ExtAccountForm;
import com.aims.server.entity.ExtAccountItem;

import java.util.List;
import java.util.Map;

/**
 * 企业或集团外常用账户信息表Service
 */
public interface ExtAccountFormService {
    /**
     * 创建表单(抬头+明细)
     * @param dto 表单DTO
     * @return 表单ID
     */
    String createForm(ExtAccountFormDTO dto);

    /**
     * 根据formId查询表单(含明细)
     * @param formId 表单ID
     * @return 表单对象
     */
    ExtAccountForm getFormById(String formId);

    /**
     * 更新表单(抬头+明细)
     * @param formId 表单ID
     * @param dto 表单DTO
     */
    void updateForm(String formId, ExtAccountFormDTO dto);

    /**
     * 删除表单
     * @param formId 表单ID
     */
    void deleteForm(String formId);

    /**
     * 分页查询表单列表
     * @param companyName 企业名称(模糊查询,可选)
     * @param mainApplyingAccount 主申请账号(模糊查询,可选)
     * @param contactPhone 联系电话(模糊查询,可选)
     * @param page 页码(从1开始)
     * @param size 每页数量
     * @return 分页结果
     */
    Map<String, Object> getFormList(String companyName, String mainApplyingAccount,
                                    String contactPhone, Integer page, Integer size);

    /**
     * 根据formId查询明细列表
     * @param formId 表单ID
     * @return 明细列表
     */
    List<ExtAccountItem> getItemsByFormId(String formId);

    /**
     * 导出表单为Word文档
     * @param formId 表单ID
     * @return Word文档字节数组
     */
    byte[] exportFormToWord(String formId);

    /**
     * 导出表单为Word文档（V2版本，按照新格式）
     * @param formId 表单ID
     * @return Word文档字节数组
     */
    byte[] exportFormToWordV2(String formId);
}